package com.aduerr.v1shouyin.http;

import com.aduerr.v1shouyin.entity.*;
import io.reactivex.Observable;
import retrofit2.http.*;

import java.util.Map;

/**
 * 类名: APIService
 * 此类用途: ---
 *
 * @Date: 2017-08-09 16:29
 * @FileName: com.aduer.shouyin.http.APIService.java
 */
public interface APIService {
//    @FormUrlEncoded
//    @POST("pos/GetReportDetail")
//    Observable<ReportDetail> posreport(@FieldMap Map<String, String> map);
//

    /**
     * 绑定Guid
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api/PosDeviceRegedit")
    Observable<GuidEntity> bandGuid(@FieldMap Map<String, String> map);


    /**
     * 登陆  /api/GetReportIndex
     * /api/SignIn
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api/SignIn")
    Observable<UserEntity> login(@FieldMap Map<String, String> map);

    /**
     * 签退
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/account/login")
    Observable<UserEntity> Signout(@FieldMap Map<String, String> map);

    /**
     * 获取门店信息
     * /api/SignIn
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api3/GetMendianList")
    Observable<MendianListEntity> GetMendianList(@FieldMap Map<String, String> map);


    /**
     * 首页今日收款的接口  /api/GetReportIndex
     * /api/SignIn
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Report/GetReportIndex")
    Observable<TodayGetMoney> GetReport(@FieldMap Map<String, String> map);

    /**
     * 扫码收款
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/AcquirePay")
    Observable<SaoMaEntity> SaoMaPay(@FieldMap Map<String, String> map);

    /**
     * 收款状态
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/GetPayState")
    Observable<PayStateEntity> payState(@FieldMap Map<String, String> map);


    /**
     * 首页现金收款
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/CashPay")
    Observable<CashEntity> CashPay(@FieldMap Map<String, String> map);

    /**
     * 退款详情
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("api/GetPayInfo")
    Observable<OrderdetailEntity> GetPayInfo(@FieldMap Map<String, String> map);

    /**
     * 退款
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/RefundM")
    Observable<RefundMEntity> orderRefundM(@FieldMap Map<String, String> map);

    /**
     * 二维码图片
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/QrCodePay")
    Observable<ErwewimaResultEntity> getErweimaBitmap(@FieldMap Map<String, String> map);

    /**
     * 轮训获取订单状态
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api/getpaystate")
    Observable<ErwweimastateEntity> getpayerwweimastate(@FieldMap Map<String, String> map);

    /**
     * 会员信息
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/GetMemberInfo")
    Observable<MemberInfoEntity> getMemberinfo(@FieldMap Map<String, String> map);

    /**
     * 会员消费
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/MemberToPay")
    Observable<MemberToPayEntity> MemberToPay(@FieldMap Map<String, String> map);

    /**
     * 新会员消费
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/MemberConsume/")
    Observable<MemberConsumeEntity> memberConsume(@FieldMap Map<String, String> map);

    /**
     * 获取会员支付信息
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/GetMemberConsumeInfo/")
    Observable<MemberConsumeInfoEntity> getMemberConsumeInfo(@FieldMap Map<String,
            String> map);

    /**
     * 扫码充值会员
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/AddBalance")
    Observable<MemberAddBalanceEntity> memberAddBalance(@FieldMap Map<String, String> map);


    /**
     * 获取赠送金额
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/getsendmoney")
    Observable<SendMoneyEntity> getSendMoney(@FieldMap Map<String, String> map);


    /**
     * 现金充值会员
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/MemberToPay")
    Observable<MemberRechargeAndConsumeEntity> memberToPayAndConsume(@FieldMap Map<String, String> map);

    /**
     * 会员积分充值
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/addintegral")
    Observable<IntegralEntity> addIntegral(@FieldMap Map<String, String> map);

    /**
     * 会员积分消费
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/integraltopay")
    Observable<IntegralEntity> integralToPay(@FieldMap Map<String, String> map);

    /**
     * 会员积分操作 新
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/integralchange")
    Observable<IntegralEntity> memberIntegral(@FieldMap Map<String, String> map);

    /**
     * 获取会员支付设置，是否开启分离支付
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/GetMemberConfig/")
    Observable<MemberConfigEntity> getMemberConfig(@FieldMap Map<String, String> map);

    /**
     * 4. 会员充值列表
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/GetMemberMoneyL")
    Observable<GetMemberListEntity> GetMemberList(@FieldMap Map<String, String> map);

    /**
     * 会员消费记录
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/getconsumerecordlist")
    Observable<MemberConsumeRecordEntity> getConsumeRecordList(@FieldMap Map<String,
            String> map);

    /**
     * 会员消费记录
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/getrechargerecordlist")
    Observable<MemberRechargeRecordEntity> getRechargeRecordList(@FieldMap Map<String,
            String> map);

    /**
     * 会员消费详情
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/getconsumerecordinfo")
    Observable<MemberConsumeDetailEntity> getMemeberConsmeDetail(@FieldMap Map<String,
            String> map);

    /**
     * 会员充值详情
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/getrechargerecordinfo")
    Observable<MemberRechargeDetailEntity> getMemeberRechargeDetail(@FieldMap Map<String, String> map);


    /**
     * 获取会员充值赠送活动列表
     * 需要修改
     * ====================================================================================================
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Member/GetChangeSetList")
    Observable<MemberGetChangeSetListEntity> memberGetChangeSetList(@FieldMap Map<String, String> map);

    /**
     * 银联收款/api3/UpdateUnionPayOrderState
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api3/AcquirePay")
    Observable<SaoMaEntity> YinlianPay(@FieldMap Map<String, String> map);

    /**
     * pos刷卡上传参数
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/UpdateUnionPayOrderState")
    Observable<UpdateUnionPayOrderStateEntity> UpdateUnionPayOrderState(@FieldMap Map<String, String> map);

    /**
     * pos预授权
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/UpdateYuPayOrderState")
    Observable<UpdateYuPayOrderStateEntity> UpdateYuPayOrderState(@FieldMap Map<String,
            String> map);


    /**
     * 1根据单笔订单号查询订单详情
     * 2订单列表
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Order/GetPosOrderL")
    Observable<OrderGetPosOrderLEntity> orderGetPosOrderL(@FieldMap Map<String, String> map);

    /**
     * 微信支付宝收退款日统计接口
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/report/receivablesdata")
    Observable<ReceivablesDataEntity> receivablesData(@FieldMap Map<String, String> map);

    /**
     * 退款记录
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Order/GetRefoundPosOrderL")
    Observable<OrderGetPosOrderLEntity> orderGetRefoundPosOrderL(@FieldMap Map<String,
            String> map);

    /**
     * 会员充值消费日统计数据
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/report/memberdataday")
    Observable<MemberDataDayEntity> memberDataDay(@FieldMap Map<String, String> map);

    /**
     * 会员消费日统计
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/getconsumerecorddata")
    Observable<GetConsumeRecordDataEntity> getConsumeRecordData(@FieldMap Map<String,
            String> map);

    /**
     * 会员充值日统计
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/member/getrechargerecorddata")
    Observable<MemberRechargeRecordDataEntity> getRechargeRecordData(@FieldMap Map<String, String> map);


    /**
     * 卡券核销的接口 扫描二维码  zxing的类中.
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Card/TicketUseP")
    Observable<KaQuanHeXiaoEntity> getKaQuanHeXiao(@FieldMap Map<String, String> map);

    /**
     * 卡券核销列表 可以查询该卡券的具体详情
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Card/GetPassCardL")
    Observable<KaQuanXiangQingEntity> getKaQuanXiangQingDetail(@FieldMap Map<String,
            String> map);

    @FormUrlEncoded
    @POST("/card/getothercard/")
    Observable<OtherCardEntity> getOtherCardDetail(@FieldMap Map<String, String> map);

    /**
     * 核销记录，次卡列表接口
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/card/GetFrequencyCardInfos/")
    Observable<KaQuanXiangQingEntity>GetFrequencyCardInfos(@FieldMap Map<String, String> map);


    /**
     * 口碑卡券核销列表 可以查询该卡券的具体详情
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/card/querykoubeiticket")
    Observable<KouBeiTicktEntity> getKouBeiquanDetail(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("/card/usekoubeicard")
    Observable<KouBeiUseEntity> useKoubeiQuan(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("/card/getindustryinfo/")
    Observable<IndustryEntity> getIndystryInfo(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("/card/getindustryorderlist/")
    Observable<BarTicketEntity> getIndustryOrderList(@FieldMap Map<String, String> map);

    @FormUrlEncoded
    @POST("/card/getkoubeicardl")
    Observable<KouBeiHeXiaoListEntity> useKoubeiQuanList(@FieldMap Map<String, String> map);

    /**
     * 交易汇总
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Report/PosTotal")
    Observable<ReportPosTotalEntity> getReportPosTotal(@FieldMap Map<String, String> map);


    /**
     * 对账-20200706之后使用
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/GetOrderReport/")
    Observable<CheckBillEntity> getOrderReport(@FieldMap Map<String, String> map);


    /**
     * 签退
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/account/GetLogoutReport")
    Observable<LogoutEntity> getLogoutReport(@FieldMap Map<String, String> map);

    /**
     * 口碑核销
     */
    @FormUrlEncoded
    @POST("/Card/QueryKoubeiTicket")
    Observable<KouBeiTicketEntity> getKouBeiTicket(@FieldMap Map<String, String> map);

    /**
     * 使用口碑券
     */
    @FormUrlEncoded
    @POST("/Card/UseKouBeiCard")
    Observable<UseKouBeiCardEntity> getUseKouBeiCard(@FieldMap Map<String, String> map);

    /**
     * 轮播图
     */
    @FormUrlEncoded
    @POST("/Card/getbannerlist/")
    Observable<BannerEntity> getBannerList(@FieldMap Map<String, String> map);

    /**
     * 功能统计
     */
    @FormUrlEncoded
    @POST("/report/posmodularcount")
    Observable<PostUseDataEntity> postUseData(@FieldMap Map<String, String> map);

    /**
     * 口碑核销记录
     */

    @FormUrlEncoded
    @POST("/Card/GetKouBeiCardL")
    Observable<UseKouBeiCardListEntity> getUseKouBeiCardList(@FieldMap Map<String,
            String> map);


    /**
     * 解除风控状态
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/account/RemoveCrisis")
    Observable<RemoveRistEntity> removeRiskManagement(@FieldMap Map<String, String> map);

    /**
     * 同步订单状态
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/synorderstate")
    Observable<SyncOrderEntity> syncOrderState(@FieldMap Map<String, String> map);

    /**
     * 获取预授权日报和押金设置
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/GetDepositReport/")
    Observable<GetDepositReportEntity> getDepositReport(@FieldMap Map<String, String> map);

    /**
     * 预授权支付
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/DepositMicropay/")
    Observable<PreAuthoOrderEntity> preAuthoPay(@FieldMap Map<String, String> map);


    /**
     * 获取预授权支付状态
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/DepositOrderQuery/")
    Observable<PreAuthoOrderEntity> preAuthoPayState(@FieldMap Map<String, String> map);

    /**
     * 获取预授权订单详情
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/GetYsqOrder/")
    Observable<PreAuthoOrderEntity> getPreAuthoOrder(@FieldMap Map<String, String> map);

    /**
     * 获取预授权订单列表
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/GetYsqOrders/")
    Observable<PreAuthoOrderListEntity> getPreAuthoOrderList(@FieldMap Map<String,
            String> map);

    /**
     * 预授权完成
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/DepositConsume/")
    Observable<PreAuthoCompleteEntity> preAuthoComplete(@FieldMap Map<String, String> map);

    /**
     * 预授权撤销
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/DepositReverse/")
    Observable<PreAuthoCompleteEntity> preAuthoCancel(@FieldMap Map<String, String> map);

    /**
     * 预授权完成撤销
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/yushouquan/DepositRefund/")
    Observable<PreAuthoCompleteEntity> preAuthoCompleteCancel(@FieldMap Map<String,
            String> map);

    /**
     * 乐刷银联刷卡获取订单号
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/AddUnionPayOrder")
    Observable<GetUnionOrderEntity> getUnionOrderId(@FieldMap Map<String, String> map);

    /**
     * 获取乐刷授权码
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api/getleshuaauthcode")
    Observable<GetLeShuaActiveCode> getActiveLeshuaActiveCode(@FieldMap Map<String,
            String> map);

    /**
     * 更新乐刷激活
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/api/updateleshuadevicestate")
    Observable<ActiveEntity> updateActiveState(@FieldMap Map<String, String> map);

    /**
     * 验证退款密码
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/order/leshuacardrefoundverification")
    Observable<AuthoRefundPasswrodEntity> authoRefundPassword(@FieldMap Map<String,
            String> map);

    /**
     * 获取推送IP/Port
     *
     * @return
     */
    @POST
    Observable<PushIP> getPushConfig(@Url String url);


    /**
     * 门店列表
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Shop/GetShopList/")
    Observable<ShopListEntity> getShopList(@FieldMap Map<String, String> map);


    /**
     * 收银员列表
     *
     * @param map
     * @return
     */
    @FormUrlEncoded
    @POST("/Shop/GetSiteUserList/")
    Observable<SellerListEntity> getSellerlist(@FieldMap Map<String, String> map);


    /**
     * 查询收银员是否开启了查看对账和签退详情权限
     */
    @FormUrlEncoded
    @POST("/order/getislookcashsummarydata")
    Observable<CashierPermissionEntity> isCashierCanCheckBill(@FieldMap Map<String, String> map);




}
